"""
字符串：str
在python中定义一个在字符串使用引号括起来的内容 单引号和双引号都可以
str_1 = '1'
print(str_1)
print(type(str_1))
如果想获取字符串中某一个字符或者部分字符叫做切片
语法格式：
变量[start：end:step]
start：开始值
end: 结束值
step: 步长，默认是1
"""
#字符串的切片
# str_1= "hello world"
# print(str_1[0])  #使用索引值取值，第一位为0
# print(str_1[0:6])   #含头不含尾
# print(str_1[2:])  #从第二位开始取到最后的值
# print(str_1[::2])   # 更改步长来进行隔位取值
# print(str_1[::-2])  #进行反转
# print(str_1[:6])    #从开始到结束位
# print(str_1[-6:])     #从右往左数

#len  查看字符串有多长
# str_1= "Hello world"
# print(len(str_1))
# #查找
"""
            正常情况                       找不到的时候
find：    # 返回首次出现的位置                  #返回 -1
index:    # 同find                            #会报错Value Error
rfind:    # 返回最后一次出现的位置                #返回 -1
rindex:   # 同rfind                            #抛出异常z
"""
# x = "zxcvbnmasdfghjklqwertyuiopz"
# print(x.find('n'))
# print(x.find('8'))
# print(x.index('z'))
# print(x.index('8'))
# print(x.rfind('z'))
# print(x.rfind('8'))
# print(x.rindex('z'))
# print(x.rindex('8'))


#字符串的判断方法
#返回值是看我们设定的条件，满足为True,不满足为False
"""
startswith:是否以某内容开头
endswith:是否以某内容结尾
isalpha:是否全为字母
isdigit:是否全为数字
isalnum:是否为字母或数字
isspace:是否为空白字符
"""
# print('hello'.startswith('he'))     # 是否以某内容开头
# print('hello'.endswith('h'))        # 是否以某内容结尾
# print('abc1'.isalpha())             # 是否全为字母
# print('123a'.isdigit())             # 是否全为数字
# print('123a'.isalnum())             # 是否为字母或数字
# print(' .'.isspace())               # 是否为空白字符


#计数 count
# 返回字符串中的非重叠次数
# text = 'hello hello world'
# print(text.count('hello'))  # 2
# print(text.count("l"))      # 5

#替换:replace
# s = "I love python and python is great"
# # 将什么内容替换为什么内容
# print(s.replace('python','java'))   #全部替换
# print(s.replace('python','java',1))   #只替换一次

#分割：
# split  按照分隔符分割，从左开始
# print("a,b,c".split(","))
# print("a,b,c".split(",",1))   #最多只分割了一次
# #rsplit  从右开始
# # splitlines   按行分割（识别/n、/r等）
# print("hello\nworld".splitlines())

#partition:指定进行分割
# text = "今天的天气好晴朗"
# print(text.partition("好"))   #('今天的天气', '好', '晴朗')



#大小写转换

# capitalize:将首字母大写，其余的小写
# print("hello".capitalize())   # Hello

# upper: 全部大写
# print("hello".upper())   # HELLO

# lower: 全部小写
# print("HELLO".lower())   # hello

# title:每个单词的首字母大写
# print('good morning'.title())  # Good Morning


#填充与对齐

# ljust : 左对齐，右侧填充
# print('Monday'.ljust(10,"+"))   # Monday++++
# rjust ： 右对齐，左侧填充
# print('Monday'.rjust(10,"+"))    # ++++Monday
# center：居中，两侧填充
# print('Monday'.center(20,"+"))   # +++++++Monday+++++++


# 去除空白
#split
# lstrip
# rstrip
# a = "    apple "
# print(a.split())   # ['apple']   返回的是一个列表（list）
# print(a.lstrip())   # 去除掉左边的空格， apple
# print(a.rstrip())   # 去除掉右边的空格，       apple

# lst = ["a","b","c"]
# result = '-'.join(lst)   #a-b-c
# print(result)




#比较符运算

# == / =：比较内容是否是相同的/不同的
#is / not is : 比较是否为同一个对象 内存地址。

a = 'hello'
b = 'hello'
# print(a == b )   #比较两个内容是否是相等的 ，返回 True & False
# print(a is b )     # True    在python中，会缓存小的字符串，可能是指的是同一个对象  内存

# 判断是否存在
#in /not in   #判断存不存在 in

# msg = 'hello'
# char = 'e'
# if char  in msg:
#     print("存在")
#
# if char not in msg:
#     print("不存在")


#格式化字符串，  format
#无序填充
# print("大家好，我是{}，今年{}岁".format("张三",18))
#按索引填充
# print("大家好，我是{0}，今年{1}岁，欢迎{0}".format("张三",18))
#按照名称填充
# print("大家好，我是{name}，今年{age}岁".format(name = "张三",age = 18))

#f-string  版本大于python3.6以上推荐使用
# name  = "Allen"
# age = 25
# print(f"你好，我是{name},明年我将{age + 5}岁")


# 可变的数据类型和不可变的数据类型
# 不可变的数据类型指的是返回一个新的对象
"""
不可变的数据类型
str :   字符串
int :    整数
tuple :   元组
float  :   浮点 
可变的数据类型： 
list :   列表
dict :   字典
set  :   集合

"""



















